DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由
C++编程语言实现,遵循COM。最新版本为DirectX 11,创建在最新的Windows 7上。
发布情况
根据
微软公布了一份白皮书《Windows开发者预览版中的Windows驱动模型增强》,Windows Vista DX10、Windows 7 DX11,但是接下来不会有Windows 8 DX12的组合,新一代系统只会小幅升级到DX11.1,但这并不意味着不值得期待。微软称,Windows 8不仅会针对开发人员提供大量的DX11更新,也会让普通用户和系统制造商体验到新的乐趣。
主要改进
- 高级着色器(HLS)模型性能改进,能让开发人员只用
GPU而无需动用CPU来做更多事:双精度
着色器功能。
- D2D应用程序的高性能
抗锯齿路径:目标独立
光栅化。
- 在移动平台和低配置设备上,基于Tile
渲染器的D3D11.1应用程序性能更高:没有覆写和丢弃。
- DX11.1硬件上所有着色器阶段均可开启着色器调试:每个阶段都有UAV。
- D3D11程序无需为大量样本分配内存即可使用高质量渲染算法:无序访问查看与
多重采样抗锯齿样本访问。
- 针对游戏开发人员的高效
缓冲管理:改进一致性缓冲的控制。
新特性
同以往每个版本的DirectX更新一样,本次DirectX 11.1的更新主要围绕两个方面展开,分别是Debug(意为除错)和Extended(扩展,包括功能和
编译方式的拓展)。本次更新的主要项目如下:
・Shader tracing(shader追踪)
・Direct3D device sharing(D3D设备共享)
・Check support of new Direct3D 11.1 features and formats(全新D3D特性支持)
・Create larger constant buffers than a shader can access(允许创建大于shader可访问尺寸的常buffer)
・Use logical operations in a render target(对渲染目标执行逻辑操作)
・Force the sample count to create a rasterizer state(为每一个
光栅化过程强制样本数)
・Process video resources with shaders(通过shader处理
视频过程)
・Change subresources with new copy options(通过新的copy选项改进资源体系)
・Discard resources and resource views(放弃传统的资源管理和资源视图模式)
・Support a larger number of UAVs(支持大量的UAV[UnorderedAccessViews]操作)
・Bind a subrange of a constant buffer to a shader(为shader绑定作为子区间的常buffer)
・Retrieve the subrange of a constant buffer that is bound to a shader(检索每一个绑定常buffer作为子区间的shader的常buffer子区间)
・Clear all or part of a resource view(清除所有关于资源视图的内容)
・Map SRVs of dynamic buffers with NO_OVERWRITE(以非
overwrite方式为SRVs动态buffer创建地图)
・Use UAVs at every pipeline stage(在每条
渲染管线上使用UAV)
本次DirectX 11.1更新最大的亮点来自Core Structures部分,包括D3D11 Feature data double的DoublePrecisionFloatShaderOps和D3D11 Feature data arthitecture的TileBasedDeferredRenderer,也就是我们通常所说的DP Shader Ops以及TBDR。
DP Shader Ops
作为DirectX 11.1在桌面部分最引人注目的更新,DP Shader Ops的引入足以引发一场革命,因为它为DP Shader的实用打开了最后一道API端的大门。
DP shader(Double Precision Float Shader,双精度浮点shader)是微软在DirectX 11中首次引入的shader类型。与传统的常规shader相比,DP shader的最大特点在于在shader处理数据及运算过程中全面引入双精度规则,这让DP shader具备了远高于常规shader的运算精度,配合FMA的应用,DP shader可以称得上桌面应用范围内完全无损的shader类型。
遗憾的是,DirectX 11中所包含的DP shader部分仅仅是在
编程及数据定义规则上进行了扩展,并为引入更多的指令及执行模式。由此可见,要想让DP shader真正走向实用,DP shader Ops的引入是必不可少的。在传统的
光栅化过程中,全部的浮点shader数据均为
单精度,就我们应用场合来看,FP32格式的shader数据已经足以保证程序运行精度的需求,DP数据在精度上是多余的。既然单精度FP32精度已经够用,引入DP shader的目的何在呢?答案来自一个显赫的名字
光线追踪。光线追踪对图形进步的意义毋庸多言,其精美的效果以及重大意义几乎每天都在被无数人无数次的重复着。按照
微软对未来桌面图形处理过程的规划,光线追踪的引入已经迫在眉睫。
在光线追踪处理过程中,处理光线交汇的运算部分必须仰仗双精度浮点数据来维持运算过程及结果的正确性。如果使用惯用的处理精度,光线在与物体交互作用2次以上之后将会发生不可忽略的数据溢出,如果按照常规处理过程要求的那样让一束光线与物体交互作用最少6~8次,甚至30~50次的话,最终结果必定已经面目全非。由此可见,要保证
光线追踪能够实用化并与现阶段的shader体系有机的结合在一起,DP shader的引入是必不可少的。而DirectX 11.1中的DP Shader Ops,正是这一切能够得以实现的基础。
TBDR
DirectX 11.1的另一个更新TileBasedDeferredRenderer几乎与桌面图形体系完全无关。
Tile-Based Deferred Render是Power VR独特的
TBR技术的一种延伸实现手段。TBR/TBDR通过将每一帧画面划分成多个矩形区域,并对区域内的所有像素分别进行Z值检查,在任务进入渲染阶段之前就将被遮挡的不可见像素剔除掉。由于在渲染之前进行Z-culling操作,TBR/TBDR极大地削减了最终被渲染像素的数量,不仅大幅降低了系统对像素的处理压力,更极大的节约了
显存带宽及空间的开销。广泛采用TBR/TBDR技术的
GPU,主要包括Imagination为移动领域提供的SGX Series5系列。
通过DirectX 11.1的TileBasedDeferredRenderer重新对TBDR技术进行了支持,
图形函数库接口的打开让希望使用TBDR技术的
程序员获得了在
DirectX环境下即可完成
编译程序的机会,这对于平衡性能与功耗之间的关系,进而让程序员在DirectX框架下完成移动设备程序的构造有着重要的意义。
更新目的
windows8 M3作为
开发者预览版,其目的不仅在于为开发者提供一个能够对新操作系统特性进行预览的平台,实际上
微软希望通过M3向业界及用户传递的更重要的信息,在于其重整
桌面图形业界以及跨平台的未来操作系统及图形API发展趋势。而这种信息的传达,则需要借助DirectX 11.1来进一步强化和实践。
传统的
光栅化处理过程从出现到今天经历了漫长的历史,它对于整个计算机视觉
虚拟现实技术的发展可谓贡献良多。但由于其本身固有的诸多缺陷,比如“本没有光却硬要说这里有光”的欺骗性处理方式,传统光栅化在今天已经成了严重制约显示技术进步以及特效表达的障碍。作为桌面图形界得领导者,微软自然首当其冲的感受到了来自技术端的限制以及需求端的压力。寻找改进甚至替代传统光栅化过程的处理方式,已经成了改进桌面图形应用领域停滞不前现状的唯一出路。因此对拥有很大优势的
光线追踪技术的追求,也便顺理成章的成了微软面前最好的选择。既然要改革图形处理过程,将光线追踪引入甚至是纳入到
光栅化处理过程当中来,为这个过程逐步打下基础并创造条件显然是必要的。通过DirectX 11/11.1出现并逐步完善的DP Shader,其目的便在于此。
而对于跨平台来说,
微软的决心则更加坚定。windows8 M3的发布向世人表达了微软继续称霸X86
桌面操作系统的决心之外,更向所有人传达了一个明确的信号:微软将以前所未有的决心开始大举进军移动领域。伴随着移动领域极为旺盛的需求增长,微软将注意力转向该领域是理所当然的。然而移动领域不像桌面,这并不是一个微软熟悉并且说了算的地方,这里的天空依旧是属于Open GL ES的,缺乏说话的地位和分量显然是微软极为头疼的问题。如果微软想要快速介入,TBDR这一Imagination在移动领域广为使用的技术显然会是一个很好的突破口。只要将
程序员成功地吸引到
DirectX的旗下,攻陷移动领域,或者起码能够在该领域获得充分的话语权,进而影响该领域的发展就是迟早的事情了。因此,可以说在本次DirectX 11.1的所有更新中,最引人瞩目的就是TBDR的引入。DirectX 11.1不仅有助于帮助
微软进一步在移动领域推广windows8,更能让微软进一步扩大自己的领地和影响力。
硬件支持
AMD显卡方面,
南方群岛架构的Radeon HD 7000系列显卡完整支持DirectX 11.1,而上一代
北方群岛架构的Radeon HD 6000系列部分支持DirectX 11.1,但特性级别仅支持DX11.0;
NVIDIA方面,开普勒架构的GTX 600系列支持DirectX 11.1,但不完全支持完整硬件特性级别的DirectX 11.1,而下一代的开普勒改进架构GTX 700系列,包括GK112、GK114、GK117等核心都会完整支持硬件特性级别DirectX 11.1。